package com.entrogy.service;

import com.entrogy.bean.CourseEntity;
import com.entrogy.bean.StaticCourseEntity;
import com.entrogy.bean.UserEntity;

import java.util.List;
import java.util.Map;

public interface CourseService {
	/**
	 * 新增课程
	 * @param
	 * @param gradeId
	 * @param courseTotalScore
     * @return  int
	 */
	int addCourse(String courseName, int classId, String schoolCode, int courseId, int staticCourseId, Integer gradeId, Double courseTotalScore);

	/**
	 * 修改课程课程
	 * @param
	 * @return  int
	 */
	int updateCourse(int id,String courseName,String course_id);


	/**
	 * 课程列表
	 * @param
	 * @return  List
	 */
	List<CourseEntity> getCourseList(String courseName,String gradeId,String classId,String schoolCode);



	/**
	 * 删除课程
	 * @param id
	 * @return  int
	 */
	int deleteCourse(int id,String schoolCode);

	/**
	 *  条件获取列表总数
	 * @param
	 * @return int
	 */
	int  getTotal(String courseName,String gradeId,String classId,String schoolCode);


	/**
	 * 给老师分配科目
	 * @param courseId 科目ID
	 * @param teacherId 老师ID
	 * @return
	 */
	int accountAssignment(String[] courseId, String teacherId,String schoolCode,int type);

	/**
	 * 获取该学校所有教师所教的课程
	 * @param schoolCode
	 * @return
	 */
	List<UserEntity> getUserAccount(String schoolCode);

	/**
	 * 编辑老师的所教课程
	 * @param courseId
	 * @param teacherId
	 * @param schoolCode
	 * @return
	 */
	int updateUserAccount(String courseId, String teacherId, String schoolCode);

    /**
     * 添加静态的课程设计表
     * @param courseName
     * @param uid
     * @param schoolCode
     * @return
     */
    int insertStaticCourse(String courseName, String uid, String schoolCode);

	/**
	 * 更新静态课程表
	 * @param id
	 * @param courseName
	 * @param uid
	 * @param schoolCode
	 * @return
	 */
	int updateStaticCourse(int id, String courseName, String uid, String schoolCode);

	/**
	 * 获取静态课程的列表
	 * @param schoolCode
	 * @return
	 */
	List<StaticCourseEntity> getStaticCourse(String schoolCode);

	/**
	 * 获取某个学校的课程名称列表
	 * @param schoolCode
	 * @return
	 */
	List<String> getStaticCourseName( String schoolCode);
	/**
	 *  获取某个学校的课程ID
	 * @param schoolCode
	 * @return
	 */

	List<Integer> getIdBySchoolCode( String schoolCode);

	/**
	 *  根据id 查询课程名称
	 * @return
	 */
	String getCourseNameById(String schoolCode,Integer staticCourseId);
	/**
	 *   查询用户信息分页
	 * @param schoolCode
	 * @return
	 */
	List<Map<String,Object>>  getUserList(String schoolCode,String name);
	/**
	 *   查询用户信息总数
	 * @param schoolCode
	 * @return
	 */
	int  getUserListTotal(String schoolCode,String name);

	/**
	 *  获取教师id
	 * @param schoolCode
	 * @return
	 */
	List<CourseEntity>  getTeacherId(String schoolCode);

	/**
	 *  清楚老师所教课程
	 * @return
	 */
	int  clearCourse(String teacherId,String schoolCode);

	/**
	 * 根据年级查询所有课程
	 * @param gradeId
	 * @param schoolCode
	 * @return
	 */
	List<StaticCourseEntity> getCourseListByGradeId(String gradeId, Integer schoolCode);

	/**
	 * 判断一个年级的课程是否已经分配完成，即科目是否一致
	 * @param gradeId
	 * @param staticCourseList
	 * @return
	 */
	boolean hasFinishAssignCourse(String gradeId, List<StaticCourseEntity> staticCourseList, Integer schoolCode);

	/**
	 * 查询该学校的所有静态科目
	 * @param schoolCode
	 * @return
	 */
    List<StaticCourseEntity> listStaticCourse(Integer schoolCode);

	/**
	 * 初始化课程信息
	 * @param schoolCode
	 * @param gradeId
	 * @param classId
	 * @return
	 */
    boolean initCourseData(Integer schoolCode, Integer gradeId, Integer classId);

	/**
	 * 得到教师所教科目
	 * @param teacherId
	 * @return
	 */
	List<CourseEntity> listTeacherCourse(String teacherId);

}
